El diseño de las operaciones del TDA

Con respecto a la pregunta: ¿Cuáles son sus operaciones? Tenemos muchas respuestas. Las operaciones que primero vienen a la mente son las aritméticas: sumar con otro \( Complejo \), restar de otro \( Complejo \) y multiplicar con otro \( Complejo \), que se expresan de la siguiente forma:

\begin{eqnarray*}
sumar: & Complejo\times Complejo & \rightarrow Complejo\\
res...
...\
multiplicar: & Complejo\times Complejo & \rightarrow Complejo
\end{eqnarray*}



Cada una de las anteriores operaciones tiene como dominio el producto cartesiano de \( Complejos \) y como rango un Complejo.

Se pueden definir operaciones que permitan obtener las partes del \( Complejo \): como obtener la parte \( real \) o la parte \( imaginaria \). A estas se les llama operaciones de proyección:

\begin{eqnarray*}
obtreal: & Complejo & \rightarrow R\\
obtimag: & Complejo & \rightarrow I
\end{eqnarray*}



El resultado de la primera operación es la parte \( real \) del \( Complejo \) y el resultado de la segunda es la parte \( imaginaria \) del \( Complejo \).

Relacionadas con las anteriores, están las operaciones modificadoras, éstas, como su nombre lo indica, las que modifican partes del TDA, tendríamos:

\begin{eqnarray*}
modreal: & Complejo\times R & \rightarrow Complejo\\
modimag: & Complejo\times I & \rightarrow Complejo
\end{eqnarray*}



La primera operación modifica la parte \( real \) del TDA \( Complejo \) y la segunda la parte \( imaginaria \). Es una tentación querer hacer una operación modificadora por cada parte de un TDA, pero esto no es siempre aconsejable, puesto que se puede hacer inconsistente al TAD.

¿Qué es hacer inconsistente a un TDA?. La inconsistencia de un TDA se da cuando se tiene una o varias operaciones que no concuerden con la realidad que estamos modelando. Por ejemplo: Si estamos diseñando el TDA \( Puerta \) y uno de sus componentes es el estado, éste tiene dos podibilidades cerrado o abierto:


\begin{displaymath}
Puerta=(estado)\wedge estado\in Estado\wedge Estado=\left\{ abierto,cerrado\right\} \end{displaymath}

Con este TDA podríamos tener las operaciones siguientes:

\begin{eqnarray*}
abrir: & Puerta\times Llave & \rightarrow Puerta\\
modestado: & Puerta\times Estado & \rightarrow Puerta
\end{eqnarray*}



La primera operación dada la llave adecuada y la \( Puerta \) cambia el estado de la pueta a \( abierta \), pero tenemos la operación \( modestado \) ¡que modifica el estado de la puerta sin necesidad de llave!, un ladrón podria entrar muy fácilmente. La operación \( modestado \) no es consistente con la realidad puerta, la está haciendo inconsistente.

Volviendo al ejemplo de \( Complejo \), una operación básica es la operación de construcción del TDA, ésta crea una nueva instancia de un TDA y la inicializa adecuadamente:


\begin{displaymath}
Complejo:R\times I\rightarrow Complejo\end{displaymath}

El nombre de una operación constructora es el mismo del TDA. Esta operación toma un número real y un número imaginario y construye un número Complejo.

Las operaciones tienen en su dominio el TDA al que pertenecen, la única exepción se da para las operaciones constructoras.



Subsections
next up previous contents
Next: 1.5.1.2.1 Sobrecarga de operadores Up: 1.5.1 Diseño Previous: 1.5.1.2 El diseño del   Contents
Free Web Hosting